package com.newsee.remote.common.utils.tools;

import java.util.Date;
import java.util.UUID;

/**
 * @author liangzhi.chen
 * @description sap xml生成
 * @date 2019/11/7 上午 10:23
 **/
public class SapXmlBuildUntil {

    public static String makeXml(String startStr, String method,String sapReqTarSys,String message) {
        //Envelope

        return startStr +
                "<soapenv:Header/>\n" +
                //Body
                "<soapenv:Body>\n" +
                //urn
                "<urn:" + method + ">\n" +
                //request
                "<I_REQUEST>\n" +
                //baseInfo
                getBaseInfo(sapReqTarSys, method) +
                //message
                message +
                "</I_REQUEST>\n" +
                "</urn:" + method + ">\n" +
                "</soapenv:Body>\n" +
                "</soapenv:Envelope>";
    }

    /**
     * <!--32 位唯一系统请求号， 非空-->
     * <REQ_TRACE_ID>005056bb5ef61ee6bffae7a7c3b37946</REQ_TRACE_ID>
     * <!--发送时间 非空、前 8 位表示日期后 6 位表示时间-->
     * <REQ_SEND_TIME>20180808080808</REQ_SEND_TIME>
     * <!--发送方系统标识（请求发送方） -->
     * <REQ_SRC_SYS> BS-BPM-Q</REQ_SRC_SYS>
     * <!--接收方系统标识（请求接收方） -->
     * <REQ_TAR_SYS> BS-OA-Q</REQ_TAR_SYS>
     * <!--服务名称， 必须按照 PO 或 ESB 命名规范， 有 PO 或 ESB 顾问提供-->
     * <REQ_SERVER_NAME>SI_OA_PAYMENT_OUT_SYN</REQ_SERVER_NAME>
     * <!--是否为异步请求-->
     * <REQ_SYN_FLAG>1</REQ_SYN_FLAG>
     * <!--业务唯一编号， 非必填--> <REQ_BSN_ID>10000001</REQ_BSN_ID>
     * <!--重试次数， 非必填-->
     * <REQ_RETRY_TIMES>1</REQ_RETRY_TIMES>
     * <!--是否为重复请求报文-->
     * <REQ_REPEAT_FLAG>1</REQ_REPEAT_FLAG>
     * <!--是否为重复请求报文， 单位秒， 非必填-->
     * <REQ_REPEAT_CYCLE>60</REQ_REPEAT_CYCLE>
     * <!--ESB 事物 ID，通过 ESB 集成平台的为必填-->
     * <BIZTRANSACTIONID>EAS_SUNAC_056_20170712121151000_UUID </BIZTRANSACTIONID>
     * <!--业务数据条目数，非必填-->
     * <COUNT>100</COUNT>
     *
     * @return baseInfo
     * @param sapReqTarSys 接收方系统标识
     * @param method 方法名
     */
    private static String getBaseInfo(String sapReqTarSys, String method) {
        //BASEINFO
        return "<REQ_BASEINFO>\n" +
                "<REQ_TRACE_ID>" + UUID.randomUUID().toString().replace("-", "") + "</REQ_TRACE_ID>\n" +
                "<REQ_SEND_TIME>" + DateUtils.format(new Date(), "yyyyMMddHHmmss") + "</REQ_SEND_TIME>\n" +
                "<REQ_SRC_SYS>" + "BS-WYWZ-P" + "</REQ_SRC_SYS>\n" +
                "<REQ_TAR_SYS>" + sapReqTarSys + "</REQ_TAR_SYS>\n" +
                "<REQ_SERVER_NAME>" + method + "</REQ_SERVER_NAME>\n" +
                "<REQ_SYN_FLAG>" + "0" + "</REQ_SYN_FLAG>\n" +
                "<REQ_RETRY_TIMES/>\n" +
                "<REQ_REPEAT_FLAG/>\n" +
                "<REQ_REPEAT_CYCLE/>\n" +
                "<BIZTRANSACTIONID/>\n" +
                "<COUNT/>\n" +
                "</REQ_BASEINFO>\n";
    }

}
